home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / texts / rdg2html.lha / RDAG2HTML next >
Text File  |  1996-04-13  |  4KB  |  189 lines

  1.  
  2. /*
  3.     RexxDoesAmigaGuide2HTML V1.0 written at 11 Apr 1996 by Michael Ranner
  4.     This piece of code is Public Domain. Use it, distribute it, modify it!
  5. */
  6.  
  7. arg opt
  8.  
  9. if index(opt, '?') ~= 0 then do
  10.     say 'Source/A Dest/A SingleFile/S'
  11.     exit
  12. end
  13.  
  14. if index(opt, 'SINGLEFILE') ~= 0 then do
  15.     single = 1
  16.     opt = delword(opt, find(opt, 'SINGLEFILE'))
  17. end
  18. else single = 0
  19.  
  20. call open('Guide', word(opt, 1), 'R')
  21.  
  22. if single = 1 then do
  23.     open('HTML', word(opt, 2),'W')
  24.     open = 1
  25.     srcline = readln('Guide')
  26.  
  27.     if upper(word(srcline, 1)) = '@DATABASE' then do
  28.         writeln('HTML', '<HTML>')
  29.         writeln('HTML', '<HEAD>')
  30.         writech('HTML', '<TITLE>')
  31.         writech('HTML', word(srcline, 2))
  32.         writeln('HTML', '</TITLE>')
  33.         writeln('HTML', '<BODY>')
  34.     end
  35.     else do
  36.         say "That's not a AmigaGuide file!"
  37.         exit
  38.     end
  39. end
  40.  
  41. do until eof('Guide') = 1
  42.     srcline = readln('Guide')
  43.     index = index(srcline, '&')
  44.  
  45.     do while index ~= 0
  46.         srcline = insert('amp;', srcline, index)
  47.         index = index(srcline,  '&', index + 1)
  48.     end
  49.  
  50.     index = index(srcline, '<')
  51.  
  52.     do while index ~= 0
  53.         srcline = insert('lt;', srcline, index)
  54.         srcline = overlay('&', srcline, index)
  55.         index = index(srcline,  '<', index + 1)
  56.     end
  57.  
  58.     index = index(srcline, '>')
  59.  
  60.     do while index ~= 0
  61.         srcline = insert('gt;', srcline, index)
  62.         srcline = overlay('&', srcline, index)
  63.         index = index(srcline,  '>', index + 1)
  64.     end
  65.  
  66.     if index(srcline, '@') ~= 0 then do
  67.  
  68.         token = upper(word(srcline, 1))
  69.  
  70.         select
  71.  
  72.             when token = '@AUTHOR' then do
  73.                 say 'Author: ' || subword(srcline, 2)
  74.             end
  75.  
  76.             when token = '@$VER:' then do
  77.                 say 'Version: ' || subword(srcline, 2)
  78.             end
  79.  
  80.             when token = '@REMARK' then do
  81.                 say 'Remark: ' || subword(srcline, 2)
  82.             end
  83.  
  84.             when token = '@NODE' then do
  85.  
  86.                 node = compress(word(srcline, 2), ' "')
  87.                 say 'Node:' node
  88.  
  89.                 if upper(node) = 'MAIN' then do
  90.                     main = 1
  91.                     node = upper(node)
  92.                 end
  93.                 else main = 0
  94.  
  95.                 if single = 1 then do
  96.                     writeln('HTML', '<A NAME="' || node || '"></A>')
  97.                     writeln('HTML', '<PRE>')
  98.                 end
  99.                 else do
  100.                     open('HTML', compress(node, ' "').HTML, 'W')
  101.                     open = 1
  102.                     prev = ''
  103.                     next = ''
  104.                     writeln('HTML', '<HTML>')
  105.                     writeln('HTML', '<HEAD>')
  106.                     writech('HTML', '<TITLE>')
  107.                     writech('HTML', word(srcline, 2))
  108.                     writeln('HTML', '</TITLE>')
  109.                     writeln('HTML', '<BODY>')
  110.                     writeln('HTML', '<PRE>')
  111.                 end
  112.             end
  113.  
  114.             when token = '@NEXT' then do
  115.                 next = compress(word(srcline, 2), ' "')
  116.             end
  117.  
  118.             when token = '@PREV' then do
  119.                 prev = compress(word(srcline, 2), ' "')
  120.             end
  121.  
  122.             when token = '@ENDNODE' then do
  123.                 writeln('HTML', '</PRE><P>')
  124.  
  125.                 if single = 0 then do
  126.                     writeln('HTML', '<HR>')
  127.                     if main = 0 then writeln('HTML', '<A HREF="MAIN.HTML">[Main]</A>')
  128.                     if prev ~= '' then writeln('HTML', '<A HREF="' || prev || '.HTML">[Prev]</A>')
  129.                     if next ~= '' then writeln('HTML', '<A HREF="' || next || '.HTML">[Next]</A>')
  130.                     writeln('HTML', '<P>Converted at 'date()' with RexxDoesAmigaGuide2HTML by <a href="http://www.sbox.tu-graz.ac.at/home/rmike">Michael Ranner</a>.')
  131.                     writeln('HTML','</BODY>')
  132.                     call close('HTML')
  133.                     open = 0
  134.                 end
  135.             end
  136.  
  137.             otherwise do
  138.                 dstline = ''
  139.  
  140.                 do while srcline ~= ''
  141.  
  142.                     PARSE VAR srcline start '@{' text '}' srcline
  143.                     token = upper(text)
  144.  
  145.                     select
  146.  
  147.                         when token = 'I' then dstline = dstline || start || '<I>'
  148.                         when token = 'UI' then dstline = dstline || start || '</I>'
  149.                         when token = 'B' then dstline = dstline || start || '<B>'
  150.                         when token = 'UB' then dstline = dstline || start || '</B>'
  151.  
  152.                         otherwise do
  153.                             PARSE VAR text '"' name '"' token node .
  154.                             token = upper(token)
  155.                             name = compress(name,'"')
  156.                             node = compress(node,'"')
  157.  
  158.                             if token = 'LINK' then do
  159.  
  160.                                 if single = 1 then dstline = dstline || start || '<A HREF="#' || node || '">' || name || '</A>'
  161.                                 else dstline = dstline || start || '<A HREF="' || node || '.HTML">' || name || '</A>'
  162.  
  163.                             end
  164.                             else dstline = dstline || start
  165.                         end
  166.                     end
  167.                 end
  168.  
  169.                 if open = 1 then do
  170.  
  171.                     if (index(dstline, '@') = 1) then writeln('HTML', '')
  172.                     else writeln('HTML', dstline)
  173.  
  174.                 end
  175.             end
  176.         end
  177.     end
  178.     else if open = 1 then writeln('HTML', srcline)
  179. end
  180.  
  181. if single = 1 then do
  182.     writeln('HTML', '<HR>')
  183.     writeln('HTML', 'Converted at 'date()' with RexxDoesAmigaGuide2HTML by <a href="http://www.sbox.tu-graz.ac.at/home/rmike">Michael Ranner</a>.')
  184.     writeln('HTML','</BODY>')
  185.     close('HTML')
  186. end
  187.  
  188. close('Guide')
  189.